﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlServerCe;

namespace WindowsFormsApplication1
{
    public partial class VerHistorialMedico : Form
    {
        private int IdPaciente;

        Form p;

        public VerHistorialMedico(Form p, int IdPaciente)
        {
            InitializeComponent();

            this.p = p;
            this.IdPaciente = IdPaciente;
        }

        private void VerHistorialMedico_Load(object sender, EventArgs e)
        {
            p.Hide();
            this.Show();

            fillForm();
        }

        private void fillForm()
        {
            EmbeddedDatabase db = EmbeddedDatabase.Instance;

            SqlCeResultSet r = db.GetResultSetForCustomQuery("SELECT * FROM Paciente WHERE IdPaciente = " + IdPaciente);

            r.Read();

            mtbNombre.Text = r["Nombre"].ToString();
            mtbApellidoPaterno.Text = r["ApellidoPaterno"].ToString();
            mtbApellidoMaterno.Text = r["ApellidoMaterno"].ToString();
            mtbCP.Text = r["CP"].ToString();
            mtbLocalidad.Text = r["Localidad"].ToString();
            mtbCorreo.Text = r["Correo"].ToString();
            mtbTelefono.Text = r["Telefono"].ToString();
            mtbDireccion.Text = r["Direccion"].ToString();
            cmbEstado.SelectedIndex = Int16.Parse(r["Estado"].ToString());
            cmbEstadoCivil.SelectedIndex = Int16.Parse(r["EstadoCivil"].ToString());
            cmbOcupacion.SelectedIndex = Int16.Parse(r["Ocupacion"].ToString());
            cmbSexo.SelectedIndex = Int16.Parse(r["Sexo"].ToString());
            fecha_nacDateTimePicker.Value = (DateTime)r["Fecha_nac"];

            r = db.GetResultSetForCustomQuery("SELECT * FROM ExpedienteMedico WHERE IdPaciente = " + IdPaciente);

            lstExpedientes.Items.Clear();
            while (r.Read())
            {
                DateTime d = (DateTime)r["Fecha"];
                ItemObject o = new ItemObject(d.ToString(), r["IdExpediente"]);//d.Day + "/" + d.Month + "/" + d.Year, r["IdExpediente"]);
                lstExpedientes.Items.Add(o);
            }
        }

        private String validaCampos()
        {
            foreach (Control c in this.grpDatos.Controls)
                if (c is MaskedTextBox && !c.Name.Equals("mtbCorreo") && !c.Name.Equals("mtbTelefono") && String.IsNullOrEmpty(c.Text))
                    return "Alguno de los campos está vacío";

            return null;
        }

        private void btnActualizar_Click(object sender, EventArgs e)
        {
            String vc = validaCampos();

            if (vc == null)
            {
                EmbeddedDatabase db = EmbeddedDatabase.Instance;
                db.ExecuteNonQueryOperation("UPDATE Paciente SET " +
                    "Nombre = '" + mtbNombre.Text + "', " +
                    "Direccion = '" + mtbDireccion.Text + "', " +
                    "Sexo = " + cmbSexo.SelectedIndex + ", " +
                    "EstadoCivil = " + cmbEstadoCivil.SelectedIndex + ", " +
                    "Fecha_nac = '" + fecha_nacDateTimePicker.Value + "', " +
                    "Ocupacion = '" + cmbOcupacion.SelectedIndex + "', " +
                    "Localidad = '" + mtbLocalidad.Text + "', " +
                    "Estado = " + cmbEstado.SelectedIndex + ", " +
                    "CP = '" + mtbCP.Text + "', " +
                    "Telefono = '" + mtbTelefono.Text + "', " +
                    "Correo = '" + mtbCorreo.Text + "', " +
                    "ApellidoPaterno = '" + mtbApellidoPaterno.Text + "', " +
                    "ApellidoMaterno = '" + mtbApellidoMaterno.Text + "' " +
                    "WHERE IdPaciente = " + IdPaciente);

                //this.Hide();
                //p.Show();
            }
            else
                MessageBox.Show(vc, "Error al validar datos", MessageBoxButtons.OK);

        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            this.Hide();
            p.Show();
        }

        private void btnAgregarNuevo_Click(object sender, EventArgs e)
        {
            NuevoExpediente a = new NuevoExpediente(IdPaciente, this);
            a.ShowDialog(this);
            fillForm();
        }

        private void btnExaminar_Click(object sender, EventArgs e)
        {
            Examinar();
        }

        private void Examinar()
        {
            if (lstExpedientes.SelectedIndex == -1)
                return;

            int idExpediente = Int16.Parse(((ItemObject)lstExpedientes.Items[lstExpedientes.SelectedIndex]).ValueOfKey.ToString());
            ConsultarExpediente a = new ConsultarExpediente(idExpediente, this);
            a.ShowDialog(this);
        }

        private void lstExpedientes_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        private void lstExpedientes_DoubleClick(object sender, EventArgs e)
        {
            Examinar();
        }
    }
}
